/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package co.com.entidad;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;

/**
 *
 * @author 841756
 */
@Entity
@Table(name = "tbldatospersonales")
@NamedQueries({
    @NamedQuery(name = "Tbldatospersonales.findAll", query = "SELECT t FROM Tbldatospersonales t"),
    @NamedQuery(name = "Tbldatospersonales.findByIdentificacion", query = "SELECT t FROM Tbldatospersonales t WHERE t.tbldatospersonalesPK.identificacion = :identificacion"),
    @NamedQuery(name = "Tbldatospersonales.findByTipoDocumento", query = "SELECT t FROM Tbldatospersonales t WHERE t.tipoDocumento = :tipoDocumento"),
    @NamedQuery(name = "Tbldatospersonales.findByCodigo", query = "SELECT t FROM Tbldatospersonales t WHERE t.codigo = :codigo"),
    @NamedQuery(name = "Tbldatospersonales.findByApellido1", query = "SELECT t FROM Tbldatospersonales t WHERE t.apellido1 = :apellido1"),
    @NamedQuery(name = "Tbldatospersonales.findByApellido2", query = "SELECT t FROM Tbldatospersonales t WHERE t.apellido2 = :apellido2"),
    @NamedQuery(name = "Tbldatospersonales.findByNombres", query = "SELECT t FROM Tbldatospersonales t WHERE t.nombres = :nombres"),
    @NamedQuery(name = "Tbldatospersonales.findByFechaN", query = "SELECT t FROM Tbldatospersonales t WHERE t.fechaN = :fechaN"),
    @NamedQuery(name = "Tbldatospersonales.findByLugarNac", query = "SELECT t FROM Tbldatospersonales t WHERE t.lugarNac = :lugarNac"),
    @NamedQuery(name = "Tbldatospersonales.findByEstadoCivil", query = "SELECT t FROM Tbldatospersonales t WHERE t.estadoCivil = :estadoCivil"),
    @NamedQuery(name = "Tbldatospersonales.findBySexo", query = "SELECT t FROM Tbldatospersonales t WHERE t.sexo = :sexo"),
    @NamedQuery(name = "Tbldatospersonales.findByDireccion", query = "SELECT t FROM Tbldatospersonales t WHERE t.direccion = :direccion"),
    @NamedQuery(name = "Tbldatospersonales.findByCiudad", query = "SELECT t FROM Tbldatospersonales t WHERE t.ciudad = :ciudad"),
    @NamedQuery(name = "Tbldatospersonales.findByTel", query = "SELECT t FROM Tbldatospersonales t WHERE t.tel = :tel"),
    @NamedQuery(name = "Tbldatospersonales.findByEmail", query = "SELECT t FROM Tbldatospersonales t WHERE t.email = :email"),
    @NamedQuery(name = "Tbldatospersonales.findByLibretaM", query = "SELECT t FROM Tbldatospersonales t WHERE t.libretaM = :libretaM"),
    @NamedQuery(name = "Tbldatospersonales.findByDistrito", query = "SELECT t FROM Tbldatospersonales t WHERE t.distrito = :distrito"),
    @NamedQuery(name = "Tbldatospersonales.findByCertificadoJudicial", query = "SELECT t FROM Tbldatospersonales t WHERE t.certificadoJudicial = :certificadoJudicial"),
    @NamedQuery(name = "Tbldatospersonales.findByFechaExp", query = "SELECT t FROM Tbldatospersonales t WHERE t.fechaExp = :fechaExp"),
    @NamedQuery(name = "Tbldatospersonales.findByFechaEnv", query = "SELECT t FROM Tbldatospersonales t WHERE t.fechaEnv = :fechaEnv"),
    @NamedQuery(name = "Tbldatospersonales.findByLugarExp", query = "SELECT t FROM Tbldatospersonales t WHERE t.lugarExp = :lugarExp"),
    @NamedQuery(name = "Tbldatospersonales.findByEdad", query = "SELECT t FROM Tbldatospersonales t WHERE t.edad = :edad"),
    @NamedQuery(name = "Tbldatospersonales.findByFoto", query = "SELECT t FROM Tbldatospersonales t WHERE t.foto = :foto"),
    @NamedQuery(name = "Tbldatospersonales.findByCodCom", query = "SELECT t FROM Tbldatospersonales t WHERE t.tbldatospersonalesPK.codCom = :codCom"),
    @NamedQuery(name = "Tbldatospersonales.findByCodNom", query = "SELECT t FROM Tbldatospersonales t WHERE t.tbldatospersonalesPK.codNom = :codNom"),
    @NamedQuery(name = "Tbldatospersonales.findByLugarExpDoc", query = "SELECT t FROM Tbldatospersonales t WHERE t.lugarExpDoc = :lugarExpDoc")})
public class Tbldatospersonales implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected TbldatospersonalesPK tbldatospersonalesPK;
    @Size(max = 20)
    @Column(name = "tipo_documento")
    private String tipoDocumento;
    @Size(max = 12)
    @Column(name = "codigo")
    private String codigo;
    @Size(max = 25)
    @Column(name = "apellido1")
    private String apellido1;
    @Size(max = 25)
    @Column(name = "apellido2")
    private String apellido2;
    @Size(max = 30)
    @Column(name = "nombres")
    private String nombres;
    @Column(name = "fecha_n")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaN;
    @Size(max = 4)
    @Column(name = "lugar_nac")
    private String lugarNac;
    @Size(max = 11)
    @Column(name = "estado_civil")
    private String estadoCivil;
    @Size(max = 1)
    @Column(name = "sexo")
    private String sexo;
    @Size(max = 50)
    @Column(name = "direccion")
    private String direccion;
    @Size(max = 4)
    @Column(name = "ciudad")
    private String ciudad;
    @Size(max = 20)
    @Column(name = "tel")
    private String tel;
    // @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="Invalid email")//if the field contains email address consider using this annotation to enforce field validation
    @Size(max = 40)
    @Column(name = "email")
    private String email;
    @Size(max = 15)
    @Column(name = "libreta_m")
    private String libretaM;
    @Size(max = 3)
    @Column(name = "distrito")
    private String distrito;
    @Size(max = 12)
    @Column(name = "certificado_judicial")
    private String certificadoJudicial;
    @Column(name = "fecha_exp")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaExp;
    @Column(name = "fecha_env")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaEnv;
    @Size(max = 20)
    @Column(name = "lugar_exp")
    private String lugarExp;
    @Size(max = 4)
    @Column(name = "edad")
    private String edad;
    @Size(max = 50)
    @Column(name = "foto")
    private String foto;
    @Size(max = 4)
    @Column(name = "lugar_exp_doc")
    private String lugarExpDoc;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "tbldatospersonales")
    private Tbldatosgenerales tbldatosgenerales;
    @JoinColumn(name = "nacionalidad", referencedColumnName = "cod_pais")
    @ManyToOne
    private Tblpaises nacionalidad;
    @JoinColumn(name = "cod_com", referencedColumnName = "cod_compania", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Tblcompania tblcompania;

    public Tbldatospersonales() {
    }

    public Tbldatospersonales(TbldatospersonalesPK tbldatospersonalesPK) {
        this.tbldatospersonalesPK = tbldatospersonalesPK;
    }

    public Tbldatospersonales(String identificacion, String codCom, String codNom) {
        this.tbldatospersonalesPK = new TbldatospersonalesPK(identificacion, codCom, codNom);
    }

    public TbldatospersonalesPK getTbldatospersonalesPK() {
        return tbldatospersonalesPK;
    }

    public void setTbldatospersonalesPK(TbldatospersonalesPK tbldatospersonalesPK) {
        this.tbldatospersonalesPK = tbldatospersonalesPK;
    }

    public String getTipoDocumento() {
        return tipoDocumento;
    }

    public void setTipoDocumento(String tipoDocumento) {
        this.tipoDocumento = tipoDocumento;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getApellido1() {
        return apellido1;
    }

    public void setApellido1(String apellido1) {
        this.apellido1 = apellido1;
    }

    public String getApellido2() {
        return apellido2;
    }

    public void setApellido2(String apellido2) {
        this.apellido2 = apellido2;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public Date getFechaN() {
        return fechaN;
    }

    public void setFechaN(Date fechaN) {
        this.fechaN = fechaN;
    }

    public String getLugarNac() {
        return lugarNac;
    }

    public void setLugarNac(String lugarNac) {
        this.lugarNac = lugarNac;
    }

    public String getEstadoCivil() {
        return estadoCivil;
    }

    public void setEstadoCivil(String estadoCivil) {
        this.estadoCivil = estadoCivil;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getCiudad() {
        return ciudad;
    }

    public void setCiudad(String ciudad) {
        this.ciudad = ciudad;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getLibretaM() {
        return libretaM;
    }

    public void setLibretaM(String libretaM) {
        this.libretaM = libretaM;
    }

    public String getDistrito() {
        return distrito;
    }

    public void setDistrito(String distrito) {
        this.distrito = distrito;
    }

    public String getCertificadoJudicial() {
        return certificadoJudicial;
    }

    public void setCertificadoJudicial(String certificadoJudicial) {
        this.certificadoJudicial = certificadoJudicial;
    }

    public Date getFechaExp() {
        return fechaExp;
    }

    public void setFechaExp(Date fechaExp) {
        this.fechaExp = fechaExp;
    }

    public Date getFechaEnv() {
        return fechaEnv;
    }

    public void setFechaEnv(Date fechaEnv) {
        this.fechaEnv = fechaEnv;
    }

    public String getLugarExp() {
        return lugarExp;
    }

    public void setLugarExp(String lugarExp) {
        this.lugarExp = lugarExp;
    }

    public String getEdad() {
        return edad;
    }

    public void setEdad(String edad) {
        this.edad = edad;
    }

    public String getFoto() {
        return foto;
    }

    public void setFoto(String foto) {
        this.foto = foto;
    }

    public String getLugarExpDoc() {
        return lugarExpDoc;
    }

    public void setLugarExpDoc(String lugarExpDoc) {
        this.lugarExpDoc = lugarExpDoc;
    }

    public Tbldatosgenerales getTbldatosgenerales() {
        return tbldatosgenerales;
    }

    public void setTbldatosgenerales(Tbldatosgenerales tbldatosgenerales) {
        this.tbldatosgenerales = tbldatosgenerales;
    }

    public Tblpaises getNacionalidad() {
        return nacionalidad;
    }

    public void setNacionalidad(Tblpaises nacionalidad) {
        this.nacionalidad = nacionalidad;
    }

    public Tblcompania getTblcompania() {
        return tblcompania;
    }

    public void setTblcompania(Tblcompania tblcompania) {
        this.tblcompania = tblcompania;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (tbldatospersonalesPK != null ? tbldatospersonalesPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Tbldatospersonales)) {
            return false;
        }
        Tbldatospersonales other = (Tbldatospersonales) object;
        if ((this.tbldatospersonalesPK == null && other.tbldatospersonalesPK != null) || (this.tbldatospersonalesPK != null && !this.tbldatospersonalesPK.equals(other.tbldatospersonalesPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "co.com.entidad.Tbldatospersonales[ tbldatospersonalesPK=" + tbldatospersonalesPK + " ]";
    }
    
}
